home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / IATHREAD.PAK / INIT.C < prev    next >
C/C++ Source or Header  |  1997-05-06  |  7KB  |  166 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE:   init.c
  9. //
  10. //  PURPOSE:   Performs application and instance specific initialization.
  11. //
  12. //  FUNCTIONS:
  13. //    InitFrameWindow()       - Initializes window data and registers window.
  14. //    RegisterMDIChildClass() - Registers the MDI child window class.
  15. //
  16. //  COMMENTS:
  17. //
  18.  
  19. #include <windows.h>            // Required for all Windows applications
  20. #include "globals.h"            // Prototypes specific to this application
  21. #include "resource.h"
  22.  
  23. //
  24. //  FUNCTION: InitFrameWindow(HINSTANCE, int, HMENU)
  25. //
  26. //  PURPOSE: Initializes frame window data and registers window class.
  27. //
  28. //  PARAMETERS:
  29. //    hInstance - The handle to the instance of this application that
  30. //                is currently being executed.
  31. //    nCmdShow  - Specifies how the main window is to be displayed.
  32. //    hMenu     - The initial menu to be attached to the frame window
  33. //
  34. //  RETURN VALUE:
  35. //    If successful, returns the frame window's handle.
  36. //    Returns NULL if initialization failed.
  37. //
  38. //  COMMENTS:
  39. //
  40. //    This function is called at application initialization time.  It
  41. //    performs initialization tasks for the current application instance.
  42. //    Unlike Win16, in Win32, each instance of an application must register
  43. //    window classes.
  44. //
  45. //    In this function, we initialize a window class by filling out a data
  46. //    structure of type WNDCLASS and calling the Windows RegisterClass()
  47. //    function.  Then we create the main window and show it.
  48. //
  49. //
  50.  
  51. HWND InitFrameWindow(HINSTANCE hInstance, int nCmdShow, HMENU hMenu)
  52. {
  53.      HWND       hWndFrame;
  54.     WNDCLASSEX wc        = {0};
  55.     char       szAppName[DEFAULT_STR_LEN];   // The name of this application
  56.     char       szTitle[DEFAULT_STR_LEN];     // The title bar text
  57.  
  58.  
  59.     // Load the application name and description strings.
  60.     LoadString(hInstance, IDS_APPNAME, szAppName, sizeof(szAppName));
  61.     LoadString(hInstance, IDS_DESCRIPTION, szTitle, sizeof(szTitle));
  62.  
  63.     // Fill in window class structure with parameters that describe the
  64.     // frame window.
  65.     wc.cbSize        = sizeof(WNDCLASSEX);
  66.     wc.style         = CS_HREDRAW | CS_VREDRAW; // Class style(s).
  67.     wc.lpfnWndProc   = (WNDPROC)FrameWndProc;   // Window Procedure
  68.     wc.cbClsExtra    = 0;                       // No per-class extra data.
  69.     wc.cbWndExtra    = 0;                       // No per-window extra data.
  70.     wc.hInstance     = hInstance;               // Owner of this class
  71.     wc.hIcon         = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPICON)); // Icon name from .RC
  72.     wc.hCursor       = LoadCursor(NULL, IDC_ARROW); // Cursor
  73.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // Default color
  74.     wc.lpszMenuName  = szAppName;               // Menu name from .RC
  75.     wc.lpszClassName = szAppName;               // Name to register as
  76.     wc.hIconSm       = LoadImage(hInstance,        // Load small icon image
  77.                                  MAKEINTRESOURCE(IDI_APPICON),
  78.                                  IMAGE_ICON,
  79.                                  16, 16,
  80.                                  0);
  81.  
  82.     // Register the window class and return NULL if unsuccesful.
  83.     if (!RegisterClassEx(&wc))
  84.     {
  85.         //Assume we are running on NT where RegisterClassEx() is
  86.         //not implemented, so let's try calling RegisterClass().
  87.  
  88.         if (!RegisterClass((LPWNDCLASS)&wc.style))
  89.             return FALSE;
  90.     }
  91.  
  92.     // Create a frame window for this application instance.
  93.     hWndFrame = CreateWindow(szAppName,     // See RegisterClass() call
  94.                        szTitle,             // Text for window title bar
  95.                        WS_CLIPCHILDREN|WS_OVERLAPPEDWINDOW, // Window style
  96.                        CW_USEDEFAULT, 0,    // Use default positioning
  97.                        CW_USEDEFAULT, 0,    // Use default size
  98.                        NULL,                // Overlapped has no parent
  99.                        hMenu,               // Use the window class menu
  100.                        hInstance,           // This instance owns this window
  101.                        NULL                 // Don't need data in WM_CREATE
  102.                        );
  103.  
  104.     // If window was created, show and update it.
  105.     if (hWndFrame != NULL)
  106.     {
  107.         ShowWindow(hWndFrame, nCmdShow);   // Show the window
  108.         UpdateWindow(hWndFrame);           // Sends WM_PAINT message
  109.     }
  110.  
  111.     return hWndFrame;                      // Return NULL if failed, or
  112.                                            // frame window's handle if success
  113. }
  114.  
  115.  
  116. //
  117. //  FUNCTION: RegisterMDIChildClass(HINSTANCE)
  118. //
  119. //  PURPOSE: To register the MDI child window class.
  120. //
  121. //  PARAMETERS:
  122. //    hinst - The instance of the application used to register the class.
  123. //
  124. //  RETURN VALUE:
  125. //    TRUE  - Succeeded in registering the class.
  126. //    FALSE - Failed to register the class.
  127. //
  128. //  COMMENTS:
  129. //
  130. //
  131.  
  132. BOOL RegisterMDIChildClass(HINSTANCE hinst)
  133. {
  134.     WNDCLASSEX  wc = {0};
  135.     char szChildName[DEFAULT_STR_LEN];
  136.  
  137.     LoadString (hinst, IDS_CHILDNAME, szChildName, sizeof(szChildName));
  138.  
  139.     wc.cbSize        = sizeof(WNDCLASSEX);
  140.     wc.lpfnWndProc   = (WNDPROC)MDIChildWndProc;
  141.     wc.hIcon         = LoadIcon(hinst, MAKEINTRESOURCE(IDI_CHILDICON));
  142.     wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  143.     wc.lpszMenuName  = NULL;
  144.     wc.hInstance     = hinst;                      // Owner of this class
  145.     wc.cbClsExtra    = 0;
  146.     wc.cbWndExtra    = sizeof (PTHREAD_DATA);      // Will hold a pointer
  147.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // Default color
  148.     wc.lpszClassName = szChildName;
  149.     wc.hIconSm       = LoadImage(hInst,            // Load small icon image
  150.                                  MAKEINTRESOURCE(IDI_CHILDICON),
  151.                                  IMAGE_ICON,
  152.                                  16, 16,
  153.                                  0);
  154.  
  155.     if (!RegisterClassEx(&wc))
  156.     {
  157.         //Assume we are running on NT where RegisterClassEx() is
  158.         //not implemented, so let's try calling RegisterClass().
  159.  
  160.         if (!RegisterClass((LPWNDCLASS)&wc.style))
  161.             return FALSE;
  162.     }
  163.  
  164.     return TRUE;
  165. }
  166.